Для того, чтобы работать с файлами в хранилище необходимо открыть поток (файл):
HRESULT OpenStream ( const WCHAR *pwcsName, //указатель на имя открываемого потка void *reserved1, //зарезирвированно NULL DWORD grfMode, //режим доступа DWORD reserved2, //зарезирвированно 0 IStream **ppstm //указатель на поток );
Как всегда ошибок и кодов возврата может быть много. Если все нормально, то S_OK.
Пример открытия потока:
#include "stdafx.h"
#include "windows.h"
#include "ole2.h"
#include "iostream.h"
int main(int argc, char* argv[])
{
OLECHAR filename[20];
wcscpy(filename,L"test.stg");
LPSTORAGE pIStorage=NULL;
HRESULT rez;
rez=StgOpenStorage(filename,NULL, STGM_READWRITE |
STGM_SHARE_EXCLUSIVE ,NULL,0,&pIStorage);
if (!FAILED(rez))
{
HRESULT hresult;
LPSTREAM stream=NULL;
hresult = pIStorage->OpenStream(L"MyFile", NULL,
STGM_READWRITE|STGM_DIRECT|STGM_SHARE_EXCLUSIVE,0, &stream);
if (!FAILED(hresult))
{
cout << "ok open file" << endl;
}
else cout << "error open file" << endl;
stream->Release();
pIStorage->Release();
}
else cout << "Error open" << endl;
return 0;
}